package dbService

import (
	"GoSecKill/data"
	"GoSecKill/model"
	"fmt"
)
// 获取所有
func GetAllCoupons() ([]model.Coupon, error) {
	var coupons []model.Coupon
	// findAll
	result := data.Db.Find(&coupons)
	return coupons, result.Error
}

// 插入用户拥有优惠券的数据
func UserHasCoupon(userName string, coupon model.Coupon) error {
	c := model.Coupon{Username: userName,CouponName: coupon.CouponName,Amount: 1,Left: 1,
		Stock: coupon.Stock,
		Description: coupon.Description,}
	return data.Db.Model(&model.Coupon{}).Create(&c).Error
	// return data.Db.Exec(fmt.Sprintf("INSERT IGNORE INTO coupons " +
	// 	"(`username`,`coupon_name`,`amount`,`left`,`stock`,`description`) " +
	// 	"values('%s', '%s', %d, %d, %f, '%s')",
	// 	userName, coupon.CouponName, 1, 1, coupon.Stock, coupon.Description)).Error

// 	// coupon 优惠券
// type Coupon struct {
// 	Id          int64     `gorm:"primary_key;auto_increment"`
// 	Username    string    `gorm:"type:varchar(20); not null"` // 用户名
// 	CouponName  string    `gorm:"type:varchar(60); not null"` // 优惠券名称
// 	Amount      int64     						              // 最大优惠券数
// 	Left        int64								          // 剩余优惠券数
// 	Stock       int64                                       // 面额
// 	Description string    `gorm:"type:varchar(60)"`           // 优惠券描述信息
// }
}

// 优惠券库存自减1
func DecreaseOneCouponLeft(sellerName string, couponName string) error {
	// 使用gorm 需要先查询再更新
	// 简单点，直接raw sql
	return data.Db.Exec(fmt.Sprintf("UPDATE coupons c SET c.left=c.left-1 WHERE " +
		"c.username='%s' AND c.coupon_name='%s' AND c.left>0", sellerName, couponName)).Error
	
}